package com.crm.system.service.productManager;

import com.alibaba.fastjson.JSONObject;
import com.crm.common.exception.FastDFSException;
import com.crm.common.model.DhPageInfo;
import com.crm.model.entity.productManager.CustomerMemberProduct;
import com.crm.model.qo.productManager.CustomerMemberProductAddQO;
import com.crm.model.qo.productManager.CustomerMemberProductEditQO;
import com.crm.model.vo.productManager.ContractMemberProductVO;
import com.crm.model.vo.productManager.CustomerMemberProductVO;
import com.crm.model.qo.productManager.ProductQRCodeQO;
import com.crm.model.vo.productManager.CustomerProductDetailVO;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.math.BigDecimal;
import java.util.List;

/**
 * @author yincuimei
 * @Date 2021/4/12 16:23
 * 产品管理--会员产品
 */
public interface CustomerMemberProductService {

    /**
     * 产品管理--会员产品列表分页信息
     * @param productStatus        ---产品停、启用状态
     * @param memberCardName       ---会员卡名称
     * @param sysType              ---系统类型(用户-user/管理-management)
     * @param pageIndex/ pageSize  ---页码、分页大小
     * @author yincuimei
     * @return
     */
    DhPageInfo<CustomerMemberProductVO> selectCustomerMemberProductVOList(String productStatus, Integer pageIndex, Integer pageSize,String sortName,String sortOrder,String memberCardName,String sysType);

    /**
     * 产品管理--新增会员产品
     * @param memberProductAddQO  ---会员产品信息
     * @param file
     * @author yincuimei
     * @return
     */
    JSONObject insertCustomerMemberProduct(CustomerMemberProductAddQO memberProductAddQO, MultipartFile file) throws FastDFSException;

    /**
     * 会员产品列表--会员卡产品停、启用操作
     * @param memberProductId  ---主键
     * @param productStatus    ---产品停/启用状态--0:启用;1:停用
     * @return
     * @author yincuimei
     */
    Boolean updateProductStatusById(String memberProductId,String productStatus);


    /**
     * @Description: 根据产品id查看产品明细
     * @Author: yuanyunfeng
     * @Date: 2021/4/14 15:34
     * @Param:
     * @Return:
     */
    List<CustomerProductDetailVO> queryCustomerProductDetailInfo(String memberProductId);


    /**
     * @Description: 根据用户id、产品id、token生成二维码
     * @Author: yuanyunfeng
     * @Date: 2021/4/14 15:34
     * @Param:
     * @Return:
     */
    String createDRCode(ProductQRCodeQO createQRCodeReq);


    /**
     * @Description: 根据产品id修改产品销售价格
     * @Author: yuanyunfeng
     * @Date: 2021/4/14 15:33
     * @Param:
     * @Return:
     */
    boolean updateCardPrice(CustomerMemberProductEditQO memberEditQO);


    /**
     * 根据token跳转链接
     * @param token
     * @return
     */
    String copyLink(String token);

    /***
     * @Description: 查询合同添加的会员产品
     * @Param: pageIndex/pageSize 页码/每页显示个数
     * @Author: luojie
     * @Date: 2021/4/19 14:11
     */
    DhPageInfo<ContractMemberProductVO> selectContractMemberProductList(Integer pageIndex, Integer pageSize,String productName,String whetherRenew);

    /**
     * 新增商机--会员产品列表
     * @return
     * @author baijian
     */
    DhPageInfo<CustomerMemberProductVO> selectSjCustomerMemberProductVOList(String productStatus, Integer pageIndex, Integer pageSize, String sortName, String sortOrder, String memberCardName,String tag);

    /**
     * 查询所有【启用状态】的会员卡名称
     * @author yincuimei
     * @return
     */
    List<String> selectMemberCardNameByProductStatus();
}
